package bszt.honor;

import java.util.*;

public class Code01 {

    /**
     * 问题描述
     * K小姐是一位热爱编程的软件工程师，她最近在处理一批字符串数据时遇到了一些问题。这些字符串包含了合法和非法字符，合法字符包括数字（0-9）、小写字母（a-z）和大写字母（A-Z）。K小姐需要你帮助她编写一个程序，将这些字符串分类为合法字符串和非法字符串，并去除重复的合法字符串
     * <p>
     * 输入格式
     * 输入包含多行，每行一个字符串。字符串的总数不超过100，每个字符串的长度不超过 64
     * <p>
     * 输出格式
     * 第一行输出所有合法且无重复的字符串，字符串之间用一个空格分隔。第二行输出所有非法的字符串，可能包含重复，同样用一个空格分隔
     */

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Set<String> validSet = new HashSet<>();
        List<String> validList = new ArrayList<>();
        List<String> invalidList = new ArrayList<>();
        while (sc.hasNextLine()) {
            String s = sc.nextLine();
            boolean isValid = true;
            for (int i = 0; i < s.length(); i++) {
                char ch = s.charAt(i);
                if (!Character.isLetterOrDigit(ch)) {
                    isValid = false;
                    break;
                }
            }
            if (isValid) {
                if (!validSet.contains(s)) {
                    validList.add(s);
                    validSet.add(s);
                }
            } else {
                invalidList.add(s);
            }
        }

        for (int i = 0; i < validList.size(); i++) {
            System.out.print(validList.get(i));
            if (i < validList.size() - 1) System.out.print(" ");
        }
        System.out.println();
        for (int i = 0; i < invalidList.size(); i++) {
            System.out.print(invalidList.get(i));
            if (i < invalidList.size() - 1) System.out.print(" ");
        }
    }
}
